import { GetDailyDetail } from "../../../utils/data/apis";
import { LocalDate } from "../../../utils/function/tools";
import { event } from "../../../utils/interface";
import msg from "../../../utils/model/msg";

interface taskItem {
  type: string, // 活动名称
  location: string, // 地点
  task: string, // 具体任务
  date: string, // 任务日期
  [key: string]: string,
}
// pages/individual/task/index.ts
Page({

  /**
   * 页面的初始数据
   */
  data: {
    tasks: [{}], // 任务列表
    taskIndex: 0, // 任务选择指向
  },
  /**
   * @function 初始化数据
   */
  getData: async function () {
    const user = wx.getStorageSync('user');
    if (!user) {
      // 检查登录信息
      await msg.Modal('登录查看更多');
      wx.navigateBack();
      return;
    }
    // 已登录
    msg.Loading();
    const userid: string = user.id;
    GetDailyDetail({
      userid: userid,
      modelName: 'SignList',
    }) // 获取日程
      .then(async (res: any) => {
        const dailyDetail = res.data.data;
        console.log(dailyDetail);
        await this.listTasks(dailyDetail);
        msg.HideLoading();
      }) // 获取日程成功回调
      .catch((err) => {
        console.log(err);
        msg.HideLoading();
        msg.Fail('获取日程失败');
      })
  },
  /**
   * @function 获取任务列表
   */
  listTasks: async function (dailyDetail: Array<any>) {
    if (!dailyDetail || dailyDetail.length == 0 || dailyDetail[0] == '无正在进行的活动行程') {
      this.setData({
        tasks: [],
      })
      return;
    }
    // 提取任务列表
    const tasks: Array<taskItem> = dailyDetail.map((item: any) => {
      /**
       * SignIn_start_day 活动开始日期
       * day 当天为该活动的第X天
       * course_name 活动名称
       * location 活动地点
       * task 当天任务
       */
      const { SignIn_start_day, course_name, location, day, task } = item;
      const startDate = new LocalDate(SignIn_start_day); // 构造开始日期
      return {
        type: course_name,
        location: location,
        task: task,
        date: startDate.addDay(day), // 任务日期
      }
    })
    this.setData({
      tasks: tasks,
    })
    return;
  },
  /**
   * @function 日期选择器改变
   */
  dateChange: function(e: event) {
    const id: any = e.currentTarget.dataset.id;
    this.setData({
      taskIndex: id,
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    this.getData();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})